package com.lsh.oms.api.model.order;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;

import com.lsh.base.common.json.JsonUtils2;

/**
 * 发货单头
 * Created by huangdong on 16/8/1.
 */
public class OrderDeliveryHeadDTO implements Serializable {

    private static final long serialVersionUID = -4858620054296516188L;

    /**
     * ID
     */
    private Long id;

    /**
     * 发货单号
     */
    private Long doCode;

    /**
     * 订单号
     */
    private Long orderCode;

    /**
     * 发货单状态
     */
    private Integer doStatus;

    /**
     * 客户编码
     */
    private Long customerCode;

    /**
     * 收货地址编码
     */
    private Long addressCode;

    /**
     * 区域编码
     */
    private Integer regionCode;

    /**
     * 省
     */
    private Integer province;

    /**
     * 市
     */
    private Integer city;

    /**
     * 区
     */
    private Integer district;

    /**
     * 片区
     */
    private Integer area;

    /**
     * 仓库编码
     */
    private String warehouseCode;

    /**
     * 仓库名称
     */
    private String warehouseName;

    /**
     * 收货人信息
     */
    private String consigneeInfo;

    /**
     * 商品总数量
     */
    private BigDecimal goodsTotalQuantity;

    /**
     * 商品总金额
     */
    private BigDecimal goodsTotalAmount;

    /**
     * 商品优惠金额
     */
    private BigDecimal goodsDiscountAmout;

    /**
     * 订单折扣率
     */
    private BigDecimal orderDiscountRate;

    /**
     * 订单优惠金额
     */
    private BigDecimal orderDiscountAmout;

    /**
     * 优惠券总金额
     */
    private BigDecimal ticketCouponAmout;

    /**
     * 现金券总金额
     */
    private BigDecimal cashCouponAmount;

    /**
     * 运费
     */
    private BigDecimal freight;

    /**
     * 抹零金额
     */
    private BigDecimal floorAmount;

    /**
     * 支付类型（1-货到付款，2-在线支付）
     */
    private Integer payType;

    /**
     * 支付状态（0：未支付，1-已支付）
     */
    private Integer payStatus;

    /**
     * 支付减免金额
     */
    private BigDecimal payReliefAmout;

    /**
     * 应付金额
     */
    private BigDecimal expectPayAmount;

    /**
     * 实付金额
     */
    private BigDecimal actualPayAmount;

    /**
     * 发货时间
     */
    private Integer shippedTime;

    /**
     * 送达时间
     */
    private Integer arriveTime;

    /**
     * 仓储类型
     */
    private Integer storageType;

    /**
     * 创建时间
     */
    private Integer createTime;

    /**
     * 更新时间
     */
    private Integer updateTime;

    /**
     * 是否有效（0:无效；1:有效）
     */
    private Integer valid;

    private List<OrderDeliveryDetailDTO> details;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public Long getDoCode() {
        return doCode;
    }

    public void setDoCode(Long doCode) {
        this.doCode = doCode;
    }

    public Long getOrderCode() {
        return orderCode;
    }

    public void setOrderCode(Long orderCode) {
        this.orderCode = orderCode;
    }

    public Integer getDoStatus() {
        return doStatus;
    }

    public void setDoStatus(Integer doStatus) {
        this.doStatus = doStatus;
    }

    public Long getCustomerCode() {
        return customerCode;
    }

    public void setCustomerCode(Long customerCode) {
        this.customerCode = customerCode;
    }

    public Long getAddressCode() {
        return addressCode;
    }

    public void setAddressCode(Long addressCode) {
        this.addressCode = addressCode;
    }

    public Integer getRegionCode() {
        return regionCode;
    }

    public void setRegionCode(Integer regionCode) {
        this.regionCode = regionCode;
    }

    public Integer getProvince() {
        return province;
    }

    public void setProvince(Integer province) {
        this.province = province;
    }

    public Integer getCity() {
        return city;
    }

    public void setCity(Integer city) {
        this.city = city;
    }

    public Integer getDistrict() {
        return district;
    }

    public void setDistrict(Integer district) {
        this.district = district;
    }

    public Integer getArea() {
        return area;
    }

    public void setArea(Integer area) {
        this.area = area;
    }

    public String getWarehouseCode() {
        return warehouseCode;
    }

    public void setWarehouseCode(String warehouseCode) {
        this.warehouseCode = warehouseCode;
    }

    public String getWarehouseName() {
        return warehouseName;
    }

    public void setWarehouseName(String warehouseName) {
        this.warehouseName = warehouseName;
    }

    public String getConsigneeInfo() {
        return consigneeInfo;
    }

    public void setConsigneeInfo(String consigneeInfo) {
        this.consigneeInfo = consigneeInfo;
    }

    public BigDecimal getGoodsTotalQuantity() {
        return goodsTotalQuantity;
    }

    public void setGoodsTotalQuantity(BigDecimal goodsTotalQuantity) {
        this.goodsTotalQuantity = goodsTotalQuantity;
    }

    public BigDecimal getGoodsTotalAmount() {
        return goodsTotalAmount;
    }

    public void setGoodsTotalAmount(BigDecimal goodsTotalAmount) {
        this.goodsTotalAmount = goodsTotalAmount;
    }

    public BigDecimal getGoodsDiscountAmout() {
        return goodsDiscountAmout;
    }

    public void setGoodsDiscountAmout(BigDecimal goodsDiscountAmout) {
        this.goodsDiscountAmout = goodsDiscountAmout;
    }

    public BigDecimal getOrderDiscountRate() {
        return orderDiscountRate;
    }

    public void setOrderDiscountRate(BigDecimal orderDiscountRate) {
        this.orderDiscountRate = orderDiscountRate;
    }

    public BigDecimal getOrderDiscountAmout() {
        return orderDiscountAmout;
    }

    public void setOrderDiscountAmout(BigDecimal orderDiscountAmout) {
        this.orderDiscountAmout = orderDiscountAmout;
    }

    public BigDecimal getTicketCouponAmout() {
        return ticketCouponAmout;
    }

    public void setTicketCouponAmout(BigDecimal ticketCouponAmout) {
        this.ticketCouponAmout = ticketCouponAmout;
    }

    public BigDecimal getCashCouponAmount() {
        return cashCouponAmount;
    }

    public void setCashCouponAmount(BigDecimal cashCouponAmount) {
        this.cashCouponAmount = cashCouponAmount;
    }

    public BigDecimal getFreight() {
        return freight;
    }

    public void setFreight(BigDecimal freight) {
        this.freight = freight;
    }

    public BigDecimal getFloorAmount() {
        return floorAmount;
    }

    public void setFloorAmount(BigDecimal floorAmount) {
        this.floorAmount = floorAmount;
    }

    public Integer getPayType() {
        return payType;
    }

    public void setPayType(Integer payType) {
        this.payType = payType;
    }

    public Integer getPayStatus() {
        return payStatus;
    }

    public void setPayStatus(Integer payStatus) {
        this.payStatus = payStatus;
    }

    public BigDecimal getPayReliefAmout() {
        return payReliefAmout;
    }

    public void setPayReliefAmout(BigDecimal payReliefAmout) {
        this.payReliefAmout = payReliefAmout;
    }

    public BigDecimal getExpectPayAmount() {
        return expectPayAmount;
    }

    public void setExpectPayAmount(BigDecimal expectPayAmount) {
        this.expectPayAmount = expectPayAmount;
    }

    public BigDecimal getActualPayAmount() {
        return actualPayAmount;
    }

    public void setActualPayAmount(BigDecimal actualPayAmount) {
        this.actualPayAmount = actualPayAmount;
    }

    public Integer getShippedTime() {
        return shippedTime;
    }

    public void setShippedTime(Integer shippedTime) {
        this.shippedTime = shippedTime;
    }

    public Integer getArriveTime() {
        return arriveTime;
    }

    public void setArriveTime(Integer arriveTime) {
        this.arriveTime = arriveTime;
    }

    public Integer getStorageType() {
        return storageType;
    }

    public void setStorageType(Integer storageType) {
        this.storageType = storageType;
    }

    public Integer getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Integer createTime) {
        this.createTime = createTime;
    }

    public Integer getUpdateTime() {
        return updateTime;
    }

    public void setUpdateTime(Integer updateTime) {
        this.updateTime = updateTime;
    }

    public Integer getValid() {
        return valid;
    }

    public void setValid(Integer valid) {
        this.valid = valid;
    }

    public List<OrderDeliveryDetailDTO> getDetails() {
        return details;
    }

    public void setDetails(List<OrderDeliveryDetailDTO> details) {
        this.details = details;
    }

	@Override
	public String toString() {
		return "OrderDeliveryHeadDTO [id=" + id + ", doCode=" + doCode
				+ ", orderCode=" + orderCode + ", doStatus=" + doStatus
				+ ", customerCode=" + customerCode + ", addressCode="
				+ addressCode + ", regionCode=" + regionCode + ", province="
				+ province + ", city=" + city + ", district=" + district
				+ ", area=" + area + ", warehouseCode=" + warehouseCode
				+ ", warehouseName=" + warehouseName + ", consigneeInfo="
				+ consigneeInfo + ", goodsTotalQuantity=" + goodsTotalQuantity
				+ ", goodsTotalAmount=" + goodsTotalAmount
				+ ", goodsDiscountAmout=" + goodsDiscountAmout
				+ ", orderDiscountRate=" + orderDiscountRate
				+ ", orderDiscountAmout=" + orderDiscountAmout
				+ ", ticketCouponAmout=" + ticketCouponAmout
				+ ", cashCouponAmount=" + cashCouponAmount + ", freight="
				+ freight + ", floorAmount=" + floorAmount + ", payType="
				+ payType + ", payStatus=" + payStatus + ", payReliefAmout="
				+ payReliefAmout + ", expectPayAmount=" + expectPayAmount
				+ ", actualPayAmount=" + actualPayAmount + ", shippedTime="
				+ shippedTime + ", arriveTime=" + arriveTime + ", storageType="
				+ storageType + ", createTime=" + createTime + ", updateTime="
				+ updateTime + ", valid=" + valid + ", details=" + details
				+ "]";
	}
}
